package com.wva.video.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 消息队列枚举类：枚举项包含交换机、队列、路由key
 * @Author: hong
 * @Date: 2025/2/4 15:23:28
 */
@AllArgsConstructor
@Getter
public enum QueueEnum {
    /**
     * 视频预处理队列，包括审核视频标题、描述、标签
     */
    VIDEO_PROCESS_PRE("video.process.pre.fanout", "video.process.pre", "video.process.pre"),

    /**
     * 视频主要处理队列，包括转码，添加水印
     */
    VIDEO_PROCESS_MAIN("video.process.main.fanout", "video.process.main", "video.process.main"),

    /**
     * 视频机器审核队列
     */
    VIDEO_PROCESS_MACHINE_CENSOR("video.process.censor.machine.fanout", "video.process.censor.machine", "video.process.censor.machine"),

    /**
     * 视频处理失败的存放队列
     */
    VIDEO_PROCESS_ERROR("video.process.error.fanout", "video.process.error", "video.process.error"),

    /**
     * 数据库视频稿件改变投递队列
     */
    VIDEO_CHANGE("canal.topic", "video.canal.wva_video.video", "wva_video_video"),
    /**
     * 数据库用户信息改变投递队列
     */
    USER_CHANGE("canal.topic", "video.canal.wva_user.sys_user", "wva_user_sys_user"),
    /**
     * 视频元信息改变投递队列
     */
    VIDEO_META_CHANGE("canal.topic", "video.canal.wva_video.video_metadata", "wva_video_video_metadata"),
    /**
     * 互动日志队列，用于对用户的点赞行为进行持久化<br>
     * 使用routingKey方案解决并发问题，更推荐使用一致性hash方案
     */
    INTERACTION_LOG_1("video.interaction.topic", "video.interaction.log", "default"),


    ;
    private final String exchange;
    private final String queue;
    private final String routingKey;

}
